home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / umich / falcon / programm.ing / asm56.zoo / test-dac.a56 < prev    next >
Text File  |  1992-11-14  |  2KB  |  141 lines

  1. ; Various tests for output filter and DAC.  I used a Nippon Precision Circuits
  2. ; SM5813AP dual-channel 8-times oversampling digital filter into a Burr Brown
  3. ; PCM1700P dual-channel 18-bit DAC.  The code is very specific to my hardware.
  4. ;
  5. ; available signals:
  6. ;    impulse
  7. ;    square
  8. ;    triangle
  9. ;    sine        (uses twin-integrator harmonic oscillator)
  10. ;
  11. ; This code is not interrupt driven but simple spins waiting for transmitter
  12. ; ready on each sample.
  13. ;
  14. ;
  15. ; written by Quinn Jensen
  16. ; work: jensenq@npd.novell.com
  17. ; home: jensenq@qcj.icon.com
  18. ;
  19.     include    'ioequ.inc'
  20.  
  21.     org    p:$0000
  22.     jmp    <start
  23.  
  24.     org    p:$000C
  25. ;ssi    jsr    ssi_int                ;go handle SSI interrupt
  26.  
  27. ; data areas
  28.  
  29.     org    x:$0
  30. i_left    dc    0                ;left channel in
  31. i_right    dc    0                ;right channel in
  32.  
  33.     org    p:$40
  34. start
  35.  
  36. ; assign mode
  37.  
  38.     movec    #$0300,sr            ;go to IPL 3
  39.  
  40. ; set up interrupts
  41.  
  42. ;       movep    #0<<13|3<<12|0<<10,x:m_ipr    ;put SSI at lev 3, others off
  43.  
  44. ; set system sample rate
  45.  
  46.     bclr    #6,x:<<m_pbd            ;32.55 kHz
  47.     bset    #5,x:<<m_pbd            ;
  48.     bclr    #4,x:<<m_pbd            ;
  49.  
  50. ; set up SSI
  51.  
  52.     movep    #2<<13|1<<8,x:m_cra        ;16-bit word, 2 time slots
  53.     movep    #0<<15|3<<12|1<<11|1<<9,x:m_crb    ;sync,network,enable
  54.  
  55.     movep    #0,x:m_pcddr            ;port C is SSI/SCI
  56.     movep    #$1FF,x:m_pcc            ;port C is SSI/SCI
  57.  
  58. ; enable interrupts
  59.  
  60. ;       movec    #0,sr                ;lower IPL
  61.  
  62.     jmp    <impulse            ;jump to the desired signal
  63.  
  64. ; impulse
  65.  
  66. impulse
  67.     move    #>-.5,a
  68.  
  69. im1
  70.     do    #400,im0
  71.     jsr    <imp
  72. im0     
  73.     neg    a
  74.     jsr    <imp
  75.     neg    a
  76.     jmp    <im1
  77.  
  78. imp
  79.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  80.     movep    a,x:m_tx
  81.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  82.     movep    a,x:m_tx
  83.     rts
  84.  
  85. ; square wave
  86.  
  87. square
  88.     move    #>-.1,a
  89.  
  90. sq1
  91.     do    #200,sq0
  92.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  93.     movep    a,x:m_tx
  94.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  95.     movep    a,x:m_tx
  96. sq0     
  97.     neg    a
  98.     jmp    <sq1
  99.  
  100.  
  101. ; triangle wave
  102.  
  103. triangle
  104.     move    #>.010,x0
  105.     move    #>-.9,a
  106.  
  107. l0      
  108.     do    #90*2,l1
  109.     add    x0,a
  110.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  111.     movep    a,x:m_tx
  112.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  113.     movep    a,x:m_tx
  114. l1
  115.     move    x0,b
  116.     neg    b
  117.     move    b,x0
  118.     jmp    <l0
  119.  
  120.  
  121. ; sine wave
  122.  
  123. sine
  124.     move    #>.050,x0            ;oscillator freq
  125.     move    #>-.209,a            ;initial conditions
  126.     move    #>.2090,b            ;
  127.  
  128. loop
  129.     mac    x0,y0,a
  130.     move    a,y0
  131.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  132.     movep    a,x:m_tx        
  133.     mac    -x0,y0,b
  134.     move    b,y0
  135.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  136.     movep    b,x:m_tx        
  137.  
  138.     jmp    <loop
  139.  
  140.     end
  141.